﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Helper.FullTextIndex;

namespace TI_EntityLib.TiEntityObjects.AttachInfo
{
    //Собранная из таблиц документа информация
    public class DocumentmetaItemInfo
    {
        public List<TDocumentTable> Tables { get; set; }
    }

    //Структура таблички документа
    public class TDocumentTable:ICloneable
    {
        public string id { get; set; }
        public List<TRowValue> rows { get; set; }

        //формирует клон исключая пустые строки из таблиц
        public object Clone()
        {
            TDocumentTable r = new TDocumentTable() { id = this.id };
            r.rows = new List<TRowValue> ();
            foreach (TRowValue i in rows)
            {
                if (i.imOK)
                    r.rows.Add(i);
            }
            return r;
        }
    }



    public class TRowValue : IFullindexObject
    {
        private object getCellVal(List<TCellValue> cells, string сellTypeVal)
        {
            try
            {
                foreach (TCellValue i in cells)
                {
                    if (i.сellTypeVal.Equals(сellTypeVal))
                        return i.сellVal;
                }
                return null;
            }
            catch {
                 return null;
            }
        }
                
        public bool imOK { get{return !String.IsNullOrEmpty(MNN);}}
    
        public string id { get; set; }
        
        public List<TCellValue> cells { get; set; }
        
        public string MNN { get{
            object v=getCellVal(this.cells, "clMNN");
            return (v != null ? v.ToString () : string.Empty);
        } }

        public string TradeNM
        {
            get
            {
                object v = getCellVal(this.cells, "clTradeNM");
                return (v != null ? v.ToString() : string.Empty);
            }
        }

        public string Izm
        {
            get
            {
                object v = getCellVal(this.cells, "clIzm");
                return (v != null ? v.ToString() : string.Empty);
            }
        }

        public string Info
        {
            get
            {
                object v = getCellVal(this.cells, "clInfo");
                return (v != null ? v.ToString() : string.Empty);
            }
        }

        public int  Count
        {
            get
            {
                object v = getCellVal(this.cells, "clCount");
                if (null == v)
                    return 0;

                int result = 0;
                int.TryParse(v.ToString(), out result);

                return result ;
            }
        }

        public decimal  Price
        {
            get
            {
                object v = getCellVal(this.cells, "clPrice");
                if (null == v)
                    return 0;

                decimal  result = 0;
                decimal.TryParse(v.ToString().Replace (".",","), out result);

                return result;
            }
        }


        public string ID
        {
            get { return id; }
        }


        public string ValueInfo
        {
            get { return MNN; }
        }


        public List<string> Terms { get { return RamEngine.ParseText(ValueInfo); } }




        public int LengthRank
        {
            get { return Terms.Count; }
        }
    }

    public class TCellValue {
        public string id { get; set; }
        public bool isHeader {get;set;}
        public string сellTypeVal{get;set;}
        public string сellVal{get;set;}

    }
}
